大嫌いなmavenのリポジトリの依存関係を可視化する


概要

maven、

pom.xmlが偏在しててムカつきます。

.svnと同じ愚を冒している気がしてなりません。


でもいいの、、、わたしにはGradleがあるもの、、!!


とはいえ仕事なんで、内容とか問題があれば見なきゃいけないんですが、

手で開いてると発狂するので、ツールで見る事にします。



使う形式

graphml形式を使います。

http://graphml.graphdrawing.org/


この形式を選んだ理由は、近所に知ってる奴が居たから。


自分が気に入ってるビューアは下記

gephi

https://gephi.org/


mavenでgraphml形式で依存をoutput

mvn dependency:tree -DoutputType=graphml -DoutputFile=dependency.graphml

で、指定したフォルダに dependency.graphml ファイルが出来てる筈です。



読ませようとするとエラー

上記ファイルをgephiで開こうとすると、

Content is not allowed in prolog. 

とか言われます。saxパーサでエラーが出てる。

で、ファイル見てみたら、saxパーサで読むとは思えないデータ形式。


こんな感じ


org.codehaus.mojo:XXX:XXX

+- org.apache.maven:maven-project:jar:2.0.9:compile

|  +- org.apache.maven:maven-settings:jar:2.0.9:compile

|  +- org.apache.maven:maven-profile:jar:2.0.9:compile

|  +- org.apache.maven:maven-artifact-manager:jar:2.0.9:compile

|  |  +- org.apache.maven:maven-repository-metadata:jar:2.0.9:compile

|  |  \- org.apache.maven.wagon:wagon-provider-api:jar:1.0-beta-2:compile

|  \- org.apache.maven:maven-plugin-registry:jar:2.0.9:compile


ただ、mavenでの実行自体にエラーは出ていない。

カンで、「もしかしてバージョンあるんじゃね?」って思って、

バージョン指定する下記設定をpom.xmlのbuildブロックに書き足した。


<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-dependency-plugin</artifactId>
	<version>2.2</version>
</plugin>



完成図

出力されたファイルはxmlっぽくなってて、gephiで開くと下記みたいな。

スクリーンショット 2012-05-18 21.26.46.png



今後

Gradle版も出せるようにしたいです。そのうち探す。



参考にしたサイト

http://www.summa-tech.com/blog/2011/04/12/a-visual-maven-dependency-tree-view/

モロにバージョン指定について書いてあった。